home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 44
/
Amiga Format CD44 (1999-08-26)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-10].iso
/
-in_the_mag-
/
basics
/
ace
/
nap.lha
/
NAP_(d).guide
(
.txt
)
< prev
next >
Wrap
Amigaguide Document
|
1997-05-19
|
31KB
|
880 lines
@database "NAP/NAP.guide"
@master "NAP/NAP.dok"
@node Main "Einleitung"
@TOC Inhaltsverzeichnis
@NEXT Aufruf
@{"NAP - New ACE Preprocessor" link Inhaltsverzeichnis} @{"Version 2.02" link History}
Einleitung
NAP ist ein Pr
prozessor f
r die Programmiersprache ACE (AmigaBasic
Compiler with Extras) von David Benn. Momentan existieren drei Pr
prozessoren f
r ACE:
(1) APP
Der mitgelieferte Pr
prozessor. Er entfernt ACE-Kommentare und
bindet INCLUDE-Dateien ein.
(2) ACPP
Die ACE-Version des C-Pr
prozessors CPP. Die
nderung besteht
allerdings nur darin, da
der Path auf ACE: gesetzt wurde. Die
St
rke dieses Pr
prozessors liegt darin, da
er s
mtliche @{"Di-" link Direktiven}
@{"rektiven" link Direktiven} (Pr
prozessorkommandos) erkennt. Desweiteren entfernt
er C-Kommentare.
(3) NAP
Dieser Pr
prozessor ist genau f
r ACE zugeschneidert. Er er-
kennt fast alle (einschlie
lich der wichtigsten!) @{"Direktiven" link Direktiven},
entfernt ACE-Kommentare genauso wie C-Kommentare und besitzt
desweiteren noch einige Pr
prozessor-unspezifische Routinen.
@{"Daniel Seifert" link autor}
Berlin-Hellersdorf, den 04. Mai 1997
@endnode
@node Inhaltsverzeichnis "AmigaGUIDE Anleitung f
r NAP 2.02"
@TOC Inhaltsverzeichnis
@PREV Main
@NEXT Benutzung
|\ | |
| |
| Version 2.02
| \ | |____| |____| 19.05.1997
| \ | | | |
| \| e w | | C E | r e p r o c e s s o r
Inhaltsverzeichnis:
@{"Einleitung" link Main}
@{"Benutzung" link Benutzung}
@{"Aufruf" link Aufruf}
@{"Optionen" link Optionen}
@{"Direktiven" link Direktiven}
@{"Bekannte Fehler" link bugs}
@{"Zuk
nftige Versionen" link future}
@{"Danksagungen" link greetings}
@{"Copyright" link Copyright}
ber den Autor" link autor}
@{"History" link history}
@{"Ende" quit}
Anmerkung:
Die Aktionen, die NAP durchf
hrt, und einige Besonderheiten werden
im jeweiligen Unterkapitel von "@{"Optionen" link Optionen}" erl
utert.
@endnode
@node Abbruch
@TOC Inhaltsverzeichnis
Sollten Sie irgendwann einmal das Bed
rfnis haben, NAP bei seiner
Arbeit zu unterbrechen, so k
nnen Sie dies problemlos tun, indem Sie
CTRL-C dr
cken.
@endnode
@node Benutzung
@TOC Inhaltsverzeichnis
@PREV Inhaltsverzeichnis
@NEXT Aufruf
Kopieren Sie die neueste Version von NAP nach ACE:BIN/
Ersetzen Sie dann in Ihrem bas Script (falls Sie von der Shell aus
arbeiten), den Aufruf von APP oder ACPP durch den von NAP. Die Para-
meter sind dieselben. Sollten noch Optionen
bergeben worden sein,
so m
ssen diese entfernt werden oder durch die entsprechenden
@{"Optionen von NAP" link Optionen} ersetzt werden.
Falls Sie AIDE von Herbert Breuer benutzen, so geben Sie einfach bei
der Rubrik "Precompiler" unter "other" NAP ein und speichern die
Konfigurationsdatei.
@endnode
@node Aufruf
@TOC Inhaltsverzeichnis
@PREV Benutzung
@NEXT Optionen
Die folgenden 2 Abs
tze sind nur wichtig f
r User, die nicht AIDE
benutzen:
NAP kann grunds
tzlich nur von der CLI oder der Shell aufgerufen
werden. Von dort m
ssen ihm mindestens zwei Parameter
bergeben
werden, n
mlich die Eingabe- und die Ausgabedatei. NAP ist, im Ge-
gensatz zu ACPP, nicht in der Lage, von der Standardeingabe zu le-
sen oder zur Standardausgabe zu schreiben.
Zu beachten ist, da
die Ausgabedatei beim Start von NAP gel
wird. Wenn eine der beiden Dateien nicht ge
ffnet werden kann, so
wird mit einer Fehlermeldung abgebrochen.
tzlich zu den eben genannten Parametern k
nnen noch @{" Optionen " link Optionen}
mit
bergeben werden. Diese m
ssen mit einem Bindestrich eingeleitet
werden. Ben
tigt eine Option einen zus
tzlichen Parameter, so ist
dieser direkt (ohne Leerzeichen) an die Option dranzuh
ngen. Nach
diesem Parameter mu
immer ein Leerzeichen folgen. Darauffolgende
Optionen m
ssen mit einem neuen Bindestrich eingeleitet werden. An-
sonsten ist es egal, an welcher Stelle die Optionen stehen. Sie k
nen auch ohne weiteres zusammengefa
t werden (-tz anstatt @{"-t" link OptionT} @{"-z" link OptionZ}). Um
den Konventionen zu folgen, rate ich aber, die Optionen vor die Da-
teinamen zu setzen.
@endnode
@node Optionen
@TOC Inhaltsverzeichnis
@PREV Aufruf
@NEXT Buffer
NAP bietet verschiedene Optionen an. Der Gro
teil von ihnen sind so-
genannte Schalter, mit denen bestimmte Aktionen an- oder abgeschal-
tet werden.
Die restlichen Optionen ben
tigen noch einen zus
tzlichen Parameter.
Bei der Angabe von Optionen ist die Gro
- und Kleinschreibung un-
wichtig. Achten Sie aber darauf, da
das f
r den Parameter <token>
bei den Optionen -d und -u nicht gilt. (siehe @{"Direktiven" link Direktiven})
Optionen
@{"-b<kB>" link Buffer} setze Buffergr
e in Kilobytes
@{"-d<token>[<=value>]" link OptionD} definiere ein Token
@{"-p<path>" link Includepath} setze Path f
r die Includedateien
@{"-u<token>" link OptionU} entfernt ein Token
@{"-c" link OptionC} : Kommentare nicht entfernen
@{"-e" link OptionE} : Fehlermeldungen unterdr
@{"-h" link OptionH} : Hilfetext
@{"-i" link OptionI} : @{"#Define" link Direktiven}s ignorieren
@{"-l" link OptionL} : leere Zeilen nicht zusammenfassen
@{"-q" link OptionQ} : @{"#Define" link Direktiven}s als CONST-Anweisung schreiben
@{"-s" link OptionS} : unbenutzte Strukturen entfernen
@{"-t" link OptionT} :
berwachung anschalten (Tracing)
@{"-z" link OptionZ} : Zeitmessung
@endnode
@node Buffer
@TOC Inhaltsverzeichnis
@PREV Optionen
@NEXT OptionD
Um NAP schneller und effizienter zu machen, wurde eine eigene Lese-
routine geschrieben, welche mit einem @{"Buffer" link DefBuffer} arbeitet.
Dieser hat standardm
ig eine Gr
e von 100 Kilobytes (das sind ge-
nau 102400 Bytes + 5 Bytes f
r die Verwaltung) und wird f
r jede ge-
ffnete Datei angelegt. Grunds
tzlich gilt aber, da
der Buffer nie-
mals gr
er als die Datei ist. Sollte die Datei also kleiner sein,
wird nur soviel Speicher reserviert, wie n
Am schnellsten ist NAP, wenn es stets die gesamte Datei in den Buf-
fer schreiben kann und nicht nochmal nachladen mu
. Hundert Kilobyte
sollten daf
r wirklich genug sein. F
r Extremisten ist es aber er-
laubt, die Buffergr
e bis zu 640 Kilobyte hochzuschrauben. Aber das
ACE-Programm, da
diese Gr
e hat, m
chte ich nicht debuggen ;-)
Wahrscheinlicher ist, da
man die Buffergr
e mit der -b Option her-
unterschraubt, zum Beispiel, wenn man nicht soviel Speicher hat.
@endnode
@node DefBuffer "Definition Buffer"
@TOC Inhaltsverzeichnis
@PREV Buffer
@NEXT Buffer
Buffer : Speicherbereich (auch m
glich: Datei), in welchen kurz-
fristig Daten abgelegt werden, um entweder schnelleren Zu-
griff zu erhalten oder um sie f
r weitere Arbeiten aufzu-
heben oder zu sammeln.
@endnode
@node OptionD "-d<token>[=value]"
@TOC Inhaltsverzeichnis
@PREV Buffer
@NEXT IncludePath
Im Prinzip macht diese Option nichts anderes, als wenn man innerhalb
des Sourcecodes schreiben w
@{"#DEFINE" link Direktive} <token> <value>
Sollten Sie [=value] weglassen, so wird die "1" als Wert genommen.
@endnode
@node Includepath "-p<path>"
@TOC Inhaltsverzeichnis
@PREV OptionD
@NEXT OptionU
Diese Option legt fest, in welchem Path nach den Includedateien ge-
sucht werden soll. Sie k
nnen 9 verschiedene Paths definieren, all-
erdings sind 3 bereits vergeben. Bleiben Ihnen also noch 6.
Bereits definiert sind: ACEINCLUDE:
ACE:
ACE:INCLUDE/
@endnode
@node OptionU "-u<token>"
@TOC Inhaltsverzeichnis
@PREV IncludePath
@NEXT OptionC
Im Prinzip macht diese Option nichts anderes, als wenn man innerhalb
des Sourcecodes schreiben w
@{"#UNDEF" link Direktiven} <token>
@endnode
@node OptionC "-c"
@TOC Inhaltsverzeichnis
@PREV OptionU
@NEXT OptionE
Standardm
ig entfernt ACE alle @{"Kommentare" link Kommentare}, sowohl die ACE-typischen
als auch die von C.
Falls Sie diese Option benutzen, l
t NAP die Kommentare aber stehen
und wandelt nur die C-Kommentare in ACE-Kommentare um (damit es beim
Kompilieren keinen
rger gibt :-).
@endnode
@node Kommentare
@TOC Inhaltsverzeichnis
@PREV OptionC
@NEXT OptionC
NAP erkennt folgende Kommentare:
' : Einzeilenkommentar
{ } : Blockkommentar, kann sich auch
ber mehrere Zeilen er-
strecken
/* */ : Blockkommentar, wird automatisch in { } umgewandelt
@endnode
@node OptionE "-e"
@TOC Inhaltsverzeichnis
@PREV OptionC
@NEXT OptionH
Beim Bearbeiten der Eingabedatei und der dazugeh
rigen Includedatei-
en kann es passieren, da
NAP in ihnen einen @{"Fehler" link Fehler} findet.
Dieser Fehler f
hrt zwar nicht zum Abbruch, wird aber angezeigt. Mit
dieser Option unterdr
cken Sie die Ausgabe der Fehlermeldung (aus
welchem Grund auch immer).
Auch schwerwiegende Fehler, die zum vorzeitigen Beenden von NAP f
ren (Speichermangel) werden dann nicht mehr angezeigt.
@endnode
@node Fehler
@TOC Inhaltsverzeichnis
@PREV OptionE
@NEXT OptionE
- #IF ohne #ENDIF
- #ELIF au
erhalb von #IF --- #ENDIF
- zu viele #ENDIF
- korruptes #DEFINE (Parameter fehlt)
- Includedatei nicht gefunden (kein @{" Abbruch " link Abbruch}, die Konsequenzen beim
Kompilieren sollten Ihnen aber klar sein)
- ...
@endnode
@node OptionH "-h"
@TOC Inhaltsverzeichnis
@PREV OptionE
@NEXT OptionI
Diese Option gibt einen seitenlangen Text aus, in dem alle Optionen
ganz kurz erkl
rt werden. Anschlie
end beendet sich NAP.
@endnode
@node OptionI "-i"
@TOC Inhaltsverzeichnis
@PREV OptionH
@NEXT OptionL
Normalerweise werden @{"#DEFINE" link Direktiven}s von NAP bearbeitet, mit dieser Option
werden #DEFINE Anweisungen aber einfach ignoriert.
@endnode
@node OptionL "-l"
@TOC Inhaltsverzeichnis
@PREV OptionI
@NEXT OptionQ
Normalerweise fa
t NAP Leerzeilen zusammen. Mit dieser Option schal-
ten sie diese Funktion aus
Beachten Sie aber, da
eine Leerzeile nur als solche erkannt wird,
wenn in ihr absolut kein Zeichen drin steht. (Auch kein Leerzeichen,
selbst wenn die Zeile dann immer noch leer aussieht!)
@endnode
@node OptionQ "-q"
@TOC Inhaltsverzeichnis
@PREV OptionL
@NEXT OptionS
Normalerweise werden @{"#DEFINE" link Direktiven}s von NAP bearbeitet, mit dieser Option
rdet NAP aber ACE diese Arbeit auf. Das geschieht, indem #DEFINEs
einfach durch CONSTs ersetzt werden.
Beachten Sie aber, da
dann keine Parameter mehr
bergeben werden
nnen !!! Desweiteren kann es Probleme geben, wenn Sie via @{"#INCLUDE" link Direktiven}
Includefiles einbinden, die Strukturen enthalten, bei denen z.B.
ADDRESS durch NodePtr (was via @{"#DEFINE" link Direktiven} definiert wurde) ersetzt wird
(was dann nat
rlich bei der Option -q nicht mehr erkannt wird!)
@endnode
@node OptionS "-s"
@TOC Inhaltsverzeichnis
@PREV OptionQ
@NEXT OptionT
Diese Funktion schaltet eine der herausragendsten Funktionen von NAP
an :)) NAP entfernt dann n
mlich Strukturen, die nicht benutzt wer-
den.
Wem das Entfernen unbenutzter Strukturen d
mlich erscheint (immerhin
werden die von ACE ja sowieso ignoriert), sollte sich mal das fol-
gende Beispiel durchlesen.
Man nehme sich das Beispielsprogramm GadTools.b, welches sich ir-
gendwo im ACE-Archiv herumtreiben mu
. Jetzt jage man es durch ACPP
und dann durch NAP.
ACPP GadTools.b ram:gt_acpp.b <Return>
NAP -s GadTools.b ram:gt_nap.b <Return>
Na, etwas aufgefallen? Tja, gt_nap.b ist kleiner, l
t sich auch
schneller kompilieren. Warum? Geben wir doch mal folgendes ein:
NAP -st GadTools.b ram:gt_nap.b <Return>
Mit der Option @{"-t" link OptionT} schalten Sie n
mlich die
berwachungsfunktion ein.
Da kommt jetzt viel Text, uns interessiert aber blo
der Rest. Da
hlt NAP n
mlich auf, welche Strukturen gebraucht werden und welche
entfernt werden.
Da GadTools.b Dutzende von Includedateien einbindet, kommen dann
letztendlich ungef
hr 110 (!!) Strukturen zusammen. ABER: Von diesen
hundertundzehn werden nicht einmal zwanzig gebraucht ...
Und
brigens: F
r Leute mit wenig Speicher macht es schon was aus,
ob ACE die anderen 90 Strukturen im Speicher behalten mu
, weil es
ja nicht wissen kann, da
es sie nicht braucht.
berzeugt ???
@endnode
@node OptionT "-t"
@TOC Inhaltsverzeichnis
@PREV OptionS
@NEXT OptionZ
Seit v2.00 wurde die -t Option (t steht f
r TRACE) stark erweitert.
Sie gibt, w
hrend NAP l
uft, Informationen f
r den User aus, so da
der einerseits sehen kann, was NAP da macht, andererseits aber auch
sehen kann, welche Datei NAP's Fehler aufdeckt (oder so).
Ausgegeben wird:
- Dateinamen der Includedatei, inklusive Dateinummer
- Auftreten von Definitionen und Deklarationen von Strukturen so-
wie, welche Strukturen eine andere Struktur noch ben
tigt (nur,
wenn Option @{"-s" link OptionS} benutzt wird).
- welche Strukturen entfernt werden und welche ben
tigt werden
(wiederum nur, wenn @{"-s" link OptionS} benutzt wird).
@endnode
@node OptionZ "-z"
@TOC Inhaltsverzeichnis
@PREV OptionT
@NEXT Direktiven
Mit dieser Option wird mitgeteilt, da
NAP nach Beendigung seiner
Arbeit doch bitte angeben soll, wie lange es gebraucht hat (in Se-
kunden!)
@endnode
@node Direktiven
@TOC Inhaltsverzeichnis
@PREV OptionT
@NEXT Bugs
NAP unterst
tzt folgende Direktiven:
IF
IF DEFINED
IFDEF
IFNDEF
ELSE
ELIF (dasselbe wie ELSE IF, was aber von NAP nicht erkannt
wird!)
ENDIF
INCLUDE
DEFINE
UNDEF
Nicht erkannt werden folgende Direktiven:
PRAGMA
ASSERT
DEBUG
NODEBUG
ERROR
Meiner Meinung spielen letztere auch keine gro
e Rolle (mal ganz ab-
gesehen davon, da
ich nicht wei
, was sie genau bewirken).
r alle, die sich mit den Direktiven noch nicht so genau auskennen,
hier eine kurze Erl
uterung f
r alle unterst
tzten Direktiven:
Grunds
tzlich wird eine Direktive mit einem Doppelkreuz (#) einge-
leitet, da
am Zeilenanfang steht. Die Direktive steht ohne Leer-
zeichen hinter dem Doppelkreuz. Die meisten Direktiven verlangen zu-
tzlich noch einige Parameter.
--------------------------------------------------------------------
IF <expression>
Expression ist ein @{"mathematischer Ausdruck" link mathAusdruck}. Sollte dieser Ausdruck
logisch wahr sein (kleiner oder gr
er 0), so wird der folgende Ab-
schnitt
bernommen, anderenfalls entfernt. Der Abschnitt endet,
wenn eine ELIF, ELSE oder ENDIF Direktive folgt. IF-Direktiven d
fen verschachtelt sein.
--------------------------------------------------------------------
IF DEFINED <token>
Ist wahr, wenn <token> bereits mit DEFINE definiert wurde (s.u.).
--------------------------------------------------------------------
IFDEF <token>
Ist wahr, wenn <token> bereits mit DEFINE definiert wurde (s.u.).
--------------------------------------------------------------------
IFNDEF <token>
Ist wahr, wenn <token> noch nicht mit Define definiert wurde (s.u.).
--------------------------------------------------------------------
ELSE
auf eine IF- oder ELIF-Direktive folgen. Der folgende Abschnitt
wird ausgef
hrt, wenn die Aussage bei der letzen IF-Direktive lo-
gisch falsch war. Beachten Sie, da
innerhalb einer IF-Direktive
nur eine ELSE-Direktive sein darf, NAP da allerdings nicht aufpa
--------------------------------------------------------------------
ELIF <expression>
Kombination von "ELSE IF". Beachten Sie, da
ELIF bei NAP nicht be-
sonders gut implementiert ist. Fehler bei der Bearbeitung von ELIF-
Direktiven sind also sehr wahrscheinlich.
--------------------------------------------------------------------
ENDIF
Beendet eine IF-Direktive.
--------------------------------------------------------------------
INCLUDE <filename>
Hier m
ssen die spitzen Klammern
brigens wirklich um den Dateinamen
herumbleiben! Die INCLUDE-Direktive bewirkt, da
die angegebene Da-
tei an der momentanen Position eingef
gt wird. Da Includedateien un-
tereinander verschachtelt sind, ist es sehr gut m
glich, da
diesel-
be Datei zweimal eingebunden werden soll. Das wird aber einmal durch
NAP selbst und das andere Mal durch den Aufbau der Includedatei un-
terbunden.
--------------------------------------------------------------------
DEFINE <token> <value>
Definiert <token> als <value>. Wenn Sie zum Beispiel schreiben:
#DEFINE eins 1
dann wird ab sofort immer eine 1 eingesetzt, wenn das Wort "eins" im
Quellcode gefunden wird.
Beachten Sie, da
bei <token> zwischen der Gro
- und Kleinschreibung
unterschieden wird. "eins", "EINS" und "Eins" sind also alles ver-
schiedene Token!!!
Auf Token werden Sie vor allem in den Includedateien sto
en. Gucken
Sie sich doch ein paar davon an und Sie werden verstehen, warum Sie
sie brauchen.
Selbstverst
ndlich k
nnen Sie auch Parameter angeben. F
gen Sie bei
Token (ohne Leerzeichen!) eine durch Klammern umschlossene und durch
Kommas separierte Liste von Variablennamen an und in <value> werden
diese Variablen dann durch
bergebene Werte ersetzt.
Beispiel aus <ACE/ACEdef.h>:
#define box(x1,y1,x2,y2) LINE (x1,y1)-(x2,y2),,b
box(10,10,100,200)
wird zu
LINE (10,10)-(100,200),,b
Beachten Sie, da
innerhalb von <token> keine Leerzeichen sein d
fen, dies bei <value> aber nichts ausmacht.
Wenn <value> besonders gro
ist, k
nnen Sie es auf mehrere Zeilen
aufsplitten, indem Sie am Ende der Zeile einen Backslash "\" oder
eine Tilde "~" schreiben und <value> in der n
chsten Zeile fortsetz-
en. Damit unterst
tzt NAP sowohl die C- als auch die ACE-typische
Schreibweise.
--------------------------------------------------------------------
UNDEF <token>
Hebt "#define <token> <value>" wieder auf.
--------------------------------------------------------------------
@endnode
@node mathAusdruck
@TITLE "Mathematischer Ausdruck der IF- und ELIF-Direktiven"
@TOC Inhaltsverzeichnis
@PREV Direktiven
@NEXT Direktiven
NAP unterst
tzt Addition, Subtraktion, Multiplikation, Division
(ganzzahlig und mit Rest) sowie Klammerrechnung. Die Rechenzeichen
sind identisch mit denen von ACE. Der Ausdruck wird mathematisch
korrekt berechnet (Klammer- vor Punkt- vor Strichrechnung).
Das Ergebnis ist im ACE-Format SINGLE (REAL). Aus diesem Grund sind
geringe Abweichungen beim Ergebnis m
glich.
ACHTUNG: 1/3 * 3 - 1 ist mathematisch 0, durch die Ungenauigkeit von
SINGLE ist das Ergebnis bei NAP aber -0.0000001.
Das Zahlenformat ist Dezimal. Wollen Sie Hexadezimal- oder Bin
rzah-
len verwenden, so m
ssen Sie ihnen das ACE-spezifische Pr
fix voran-
stellen.
@endnode
@node bugs
@TOC Inhaltsverzeichnis
@PREV Direktiven
@NEXT Future
@TITLE "Bekannte Fehler"
* Aufgrund der Verwendung von SINGLE k
nnen die bei der IF- und ELIF
Direktive erhaltenen Werte geringf
gig abweichen. (@{"Bsp" link mathAusdruck})
* ELIF-Direktiven sind extrem fehleranf
llig. Am besten, Sie lassen
die Finger davon, bis der Fehler behoben ist. ELSE ist da schon
sicherer, es sei denn, es wird zusammen mit ELIF verwendet oder
nach einer IF-Direktive zweimal aufgerufen (was dann aber Ihre
Schuld w
* Falls auf Strukturen nur
ber SIZEOF zugesprochen wird, sie aber
nicht deklariert werden (auch nicht indirekt), werden diese Struk-
turen entfernt (nat
rlich nur mit Option @{"-s" link OptionS}).
Umgehung des Fehlers:
Struktur einfach deklarieren:
DECLARE STRUCT <struct-name> *dummyptr
Es wird so gut wie kein Speicher verschwendet (4 Bytes) !!!
Falls Sie noch Fehler finden, dann schreiben Sie @{"mir" link autor} bitte umgehend,
damit ich den Fehler so schnell wie m
glich entfernen kann !! (siehe
@{"History" link history} f
r bereits entfernte Fehler)
@endnode
@node future
@TOC Inhaltsverzeichnis
@PREV bugs
@NEXT Greetings
@TITLE "Zuk
nftige Versionen"
Meine Pl
ne, was in den n
chsten Versionen verwirklicht werden k
te. Die bei Version 1.1 aufgef
hrten Punkte wurden
brigens so gut
wie alle hier umgesetzt!
* entfernen der @{"Fehler" link bugs}
* Unterst
tzung weiterer @{"Direktiven" link Direktiven}
* weitere Optionen (siehe Anleitung von ACPP)
* weitere Geschwindigkeitssteigerungen
* ...
Ihre Ideen sind nat
rlich auch gefragt. Wenn Sie welche haben, dann
schreiben Sie sie @{"mir" link autor} doch. Danke sch
@endnode
@node greetings
@TOC Inhaltsverzeichnis
@PREV future
@NEXT Copyright
@TITLE "Danksagungen und Gr
Danke geht an ...
David Benn, Autor von ACE, f
r seine Hilfe und seinen Rat bei eini-
gen Problemen sowie daf
r, da
er ACE entwickelt hat.
Herbert Breuer f
r seine Hilfe bei den Assemblerroutinen und f
Hinweise und Ratschl
ge. Desweiteren Danke daf
r, da
er seine Zeit
geopfert hat, um NAP zu testen. S
mtliche Bugs, soweit ich sie
nicht bereits vorher gefunden hatte, wurden von ihm entdeckt.
(Kein Wunder, er ist ja auch der einzige Benutzer. Oder alle ander-
en halten sich nicht an das, was im Kapitel @{"Copyright" link Copyright} steht!)
all die User, die NAP noch benutzen werden und
ber eventuelle
@{"M
ngel" link bugs} gro
gig hinwegsehen.
@endnode
@node Copyright
@TOC Inhaltsverzeichnis
@PREV Greetings
@NEXT Autor
NAP - New ACE Preprocessor Version 2.02
19.05.1997
Diese Version von NAP, sowie alle @{"vorausgehenden" link history}, unterstehen dem
Copyright von @{"Daniel Seifert" link autor}.
NAP ist Cardware. Das hei
t, da
der Autor von den Benutzern seines
Programmes nichts weiter verlangt, als da
sie ihm einmalig eine
Postkarte schicken (vielleicht mit einer besonders sch
nen Briefmar-
ke :-) und ihm mitteilen, wie ihnen NAP gef
All diejenigen, die sich daran halten, haben das Recht, NAP zu ko-
pieren und weiterzuverbreiten (kostenlos!). Dabei m
ssen aber s
liche Dateien im Originalzustand verbleiben und es d
rfen auch keine
Dateien entfernt werden.
nderungen des Sourcecodes (der bis Version 2.01 beilag), sind nur
r den eigenen Gebrauch zul
ssig. Eine Weiterverbreitung der ge
derten Version ist vom Autor nicht stattgegeben. (Wer aber der Mei-
nung ist, etwas besonders wichtiges ge
ndert/dazugef
gt/verbessert
zu haben, kann sich nat
rlich gern mit mir in Kontakt setzen. Es
wird sich dann zeigen, ob das dann in die n
chste offizielle Version
mit einflie
Ab Version 2.02 wird der Sourcecode nicht mehr beigelegt, eine
bersetzung (Disassemblierung) ist nicht gesattet !
Ansonsten gilt:
Obwohl NAP ausf
hrlich getestet wurde, kann keine Garantie
nommen werden, da
NAP funktionsgerecht arbeitet. Sie benutzen
es auf eigenes Risiko. F
r eventuelle Sch
den wird vom Autor
keine Haftung
bernommen.
Daniel Seifert
19.05.1997
@endnode
@node Autor
@TOC Inhaltsverzeichnis
@PREV Copyright
@NEXT History
(B) Contacting the author
My name is Daniel Seifert and I'm born in 1978. At the moment I'm
studying at the "1st Grammar School Hellersdorf" (Leonard-
Bernstein-Gymnasium) whereas Hellersdorf is the eastermost suburb
of Berlin which is the capital of Germany, as you probably know,
don't you?
My favourite subjects are Maths, English and, of course, compu-
ting.
If you want to contact me, there are three possibilities:
(a) E-Mail (preferred, except for the picture card! :-)
You can reach me at my school: dseifert@hell1og.be.schule.de
-----------------------------
Please give me some time to answer -> holidays, exams or
problems with the school computer (no Amiga :(
After June '98 this EMail address might have gone (hm, well,
if not I have a little problem ;-) so use the snail mail
address instead to ask for my new address (or look out for
new programs by me ;)
WWW
Well, as of now I do not have my own home page :-( But if
you are interested in a (German) math corner, which I helped
to create, take a look at :
http://members.aol.com/fuzzymathe/index.htm
(b) snail mail
Please do only expect an answer if you enclose some money
for my costs (postage, ...). I am a little bit out of money
(aren't student always ? ;-)) so I just don't want to spend
my money on this.
(Err, I almost forgot my address ;-)
Daniel Seifert
Elsenborner Weg 25
12621 Berlin
GERMANY
(c) telephone
Well, I cannot imagine that anybody wants to contact me
this way. But anyway: call (+49) 030 5669471 and ask
for Daniel. ^ Berlin
^ Germany (at least I hope so)
Happy ACEing ;)
@endnode
@node History
@TOC Inhaltsverzeichnis
@PREV Autor
RemoveStuff (Vorg
nger von NAP)
Version 1.0 :
- 17.02.1996 : Entfernen von ACE-Kommentaren
- 18.02.1996 : Entfernen von unbenutzten Strukturen
- 22.02.1996 : Betaversion fertig
- 26.02.1996 : Pass zwei wird nun im Speicher abgewickelt. Dadurch
wird das ganze drastisch schneller.
- 27.02.1996 : fertig
Version 1.0 :
- 02.03.1996 - 17.03.1996 :
Bearbeiten von #INCLUDE Anweisungen, Entfernen von
C-Kommentaren, Defines werden als CONST geschrieben
Version 1.1 :
- 23.03.1996 : Anzeige der aktuellen Datei verbessert
- 28.03.1996 : Dateien k
nnen nun auch von anderen Verzeichnissen
included werden und nicht nur von ACEINCLUDE:
- 29.03.1996 : Optimierungen
- 18.03.1996 - 27.03.1996 :
Eigene INSTR-Routine in Assembler geschrieben und
ein Subprogramm ebenfalls in Assembler neugeschrie-
ben.
- 04.04.1996 : Einbau der Assemblerroutinen nach kleineren Proble-
men endlich geschafft
- 07.04.1996 : Optimierungen und Neuschreibung der LEGAL-Routine
Version 2.00 :
- 19.06.1996 : Unterst
tzung der DEFINE-Direktive
- 20.06.1996 : jetzt auch mit Parametern
- 23.06.1996 : Bug gefunden, am 24.06.1996 behoben
- 25.06.1996 : Code wurde so gro
ich ihn in zwei Teile auf-
teilen mu
- 28.06.1996 : Benutzung von xRead/xWrite anstatt von PRINT/INPUT
- 29.06.1996 : LEGAL-Routine in Assembler neugeschrieben
- 01.07.1996 : IsAlreadyInList-Routine in Assembler neugeschrieben
- 12.07.1996 : NAP benutzt nun _List und Node aus EXEC/LISTS.H und
EXEC/NODES.H anstatt meiner eigenen verketteten
Listen. Deshalb k
nnen jetzt auch die daf
r vorge-
sehenen Betriebssystemfunktionen benutzt werden.
- 16.07.1996 : alle ="" und <>"" durch PEEK/POKE = 0 oder <> 0 er-
setzt
- 17.07.1996 : Lese-Routine erh
lt 255-Byte Buffer
- 19.07.1996 : UNDEF-Direktive wird von nun an unterst
- 22.07.1996 : Lese-Routine neugeschrieben
- 23.07.1996 : die Aufgabenverteilung der Subprogramme ge
ndert
(Entfernen von Kommentaren nun in AddToTemp)
- 24.07.1996 : Fehler in der Lese-Routine entfernt
- 25.07.1996 : dt. Anleitung geschrieben
- 26.07.1996 : englische Anleitung geschrieben
- 02.08.1996 : Optionen p, u und d eingebaut, Unterst
tzung der
Direktiven IF DEFINED, ELSE, IFNDEF und IFDEF
- 04.08.1996 : schrieb Unterprogramm ParseExpr (berechnet mathe-
matische Ausdr
cke), Unterst
tzung von IF und ELIF
- 25.08.1996 : Fehler in ParseExpr entfernt
- 01.09.1996 : Tabulatoren sind jetzt im Quellcode erlaubt
- 03.09.1996 : Optionen z und t eingebaut
- 04.09.1996 : Option l eingebaut
- 08.09.1996 : schrieb AmigaGuide-Anleitungen und
nderte USAGE-
Anzeige
- 24.09.1996 : Division durch 0 und weiterer Fehler aus ParseExpr
entfernt, verschachtelte Klammern sind nun
brigens
auch erlaubt.
fertig
Version 2.01 :
- 27.09.1996 : Herbert Breuer berichtete einen Bug: wenn -b64 dann
wird die Datei nicht bis zum Ende bearbeitet.
- 01.10.1996 : Option t erweitert, einen weiteren Bug gefunden und
behoben (die Variable inComment wurde auch gesetzt,
wenn "{" in einem String war, da die Anweisung dazu
au
erhalb der entsprechenden IF-Anweisung war)
- 03.10.1996 : fand den Grund f
r den Fehler, den Herbert fand: da
ich nur immer Sorgen hatte, da
kleinere Buffergr
en nicht funktionieren habe ich -b64 nie getestet,
-b32 lief ja immer. Aber da ich meine eigene Lese-
Routine verwende, mu
ich im Buffer abspeichern, wo
der Cursor gerade steht. Das wird in zwei Bytes ge-
macht. Zuerst wurde das "von Hand" codiert (0 bis
65536 m
glich), sp
ter aber durch POKEW ersetzt
(-32767 bis +32768 m
glich). Dadurch funktionieren
nat
rlich nur Buffer bis zu einer Gr
e von 32 Ki-
lobyte. Das wurde behoben, indem jetzt POKEL und
vier Bytes benutzt werden.
- 04.10.1996 : schrieb neue Anleitung
- 07.10.1996 : fertig
Version 2.02 :
- 31.03.1997 -
06.04.1997 : Optimierungen, einige Optionen haben jetzt andere
Default-Einstellungen.
- ? : weitere Geschwindigkeitssteigerungen
- 20.04.1997 : Anleitung erg
nzt und Zeigerfehler entfernt.
- 06.05.1997 : Fehler entfernt: beim Check, ob der Text in "" ist,
wurde beim Finden des schlie
enden " wieder ein Byte
zur
ckgegangen, soda
es nochmal gelesen wurde ...
- 09.05.1997 : einige Bugs gefunden (beim Parsen von Macros) und
die Routine zum Umwandeln der C- in ACE-Kommentare
neugeschrieben
- 10.05.1997 : um Option -x erweitert
- 19.05.1997 : neucompiliert (mit SuperOptimizer und PhxAss OPT)
@endnode